//#include <iostream>
//using namespace std;
//
//const int N = 100;
//
//int dx[] = { 1, -1, 0, 0, 1, 1, -1, -1 };
//int dy[] = { 0, 0, 1, -1, -1, 1, 1, -1 };
//
//char a[N][N];
//int f[N][N] = { 0 };
//int n, m;
//
//void bfs(int x, int y)
//{
//	for (int k = 0; k < 8; k++)
//	{
//		int i = x + dx[k];
//		int j = y + dy[k];
//		if (i >= 1 && i <= n && j >= 1 && j <= m)
//		{
//			f[i][j]++;
//		}
//	}
//}
//
//int main()
//{
//	cin >> n >> m;
//	for (int i = 1; i <= n; i++)
//	{
//		for (int j = 1; j <= m; j++)
//		{
//			cin >> a[i][j];
//		}
//	}
//
//	for (int i = 1; i <= n; i++)
//	{
//		for (int j = 1; j <= m; j++)
//		{
//			if (a[i][j] == '*')
//			{
//				bfs(i, j);
//			}
//		}
//	}
//
//	for (int i = 1; i <= n; i++)
//	{
//		for (int j = 1; j <= m; j++)
//		{
//			if (a[i][j] == '*')
//				cout << '*';
//			else
//				cout << f[i][j];
//		}
//		cout << endl;
//	}
//
//	return 0;
//}

//#define _CRT_SECURE_NO_WARNINGS
//
//#include <iostream>
//using namespace std;
//
//char a[20];
//
//int main()
//{
//	scanf("%s", a);
//	
//	int cnt = 1;
//	int sum = 0;
//	for (int i = 0; i < 11; i++)
//	{
//		if (a[i] == '-')
//			continue;
//
//		sum += (a[i] - '0') * cnt++;
//	}
//
//	int ret = sum % 11;
//	if (ret == 10 && a[12] == 'X')
//	{
//		cout << "Right" << endl;
//	}
//	else if (ret == (a[12] - '0'))
//	{
//		cout << "Right" << endl;
//	}
//	else
//	{
//		for (int i = 0; i < 12; i++)
//		{
//			cout << a[i];
//		}
//		if (ret == 10)
//			cout << 'X' << endl;
//		else
//			cout << ret << endl;
//	}
//
//	return 0;
//}



//#include <iostream>
//using namespace std;
//
//const int N = 110;
//
//int a[N] = { 0 };
//
//int n;
//
//int main()
//{
//	cin >> n;
//	int sum = 0;
//	for (int i = 1; i <= n; i++)
//	{
//		cin >> a[i];
//		sum += a[i];
//	}
//
//	int k = sum / n;
//	int ret = 0;
//
//	/*if (a[1] > k)
//	{
//		a[2] += (a[1] - k);
//		ret++;
//	}
//	else if(a[1] < k)
//	{
//		a[2] -= (k - a[1]);
//		ret++;
//	}*/
//
//	for (int i = 1; i <= n; i++)
//	{
//		if (a[i] > k)
//		{
//			a[i + 1] += (a[i] - k);
//			ret++;
//		}
//		else if (a[i] < k)
//		{
//			a[i + 1] -= (k - a[i]);
//			ret++;
//		}
//	}
//
//	cout << ret << endl;
//
//
//	return 0;
//}



#include <iostream>
#include <cstring>
using namespace std;

typedef long long ll;

const int N = 1e3 + 10;

int fa[N] = { 0 };
ll x[N] = { 0 };
ll y[N] = { 0 };
ll z[N] = { 0 };

int T;
ll n, h, r;

int find(int x)
{
	return fa[x] == x ? x : fa[x] = find(fa[x]);
}

void un(int x, int y)
{
	fa[find(x)] = find(y);
}

bool check(int a, int b)
{
	ll d = (x[a] - x[b]) * (x[a] - x[b]) + (y[a] - y[b]) * (y[a] - y[b]) + (z[a] - z[b]) * (z[a] - z[b]);
	return d <= 4 * r * r;
}

int main()
{
	cin >> T;
	while (T--)
	{
		cin >> n >> h >> r;
		for (int i = 0; i <= n + 1; i++)
		{
			fa[i] = i;
		}

		for (int i = 1; i <= n; i++)
		{
			cin >> x[i] >> y[i] >> z[i];
			if (z[i] - r <= 0)
			{
				un(i, 0);
			}

			if (z[i] + r >= h)
			{
				un(i, n + 1);
			}

			for (int j = 1; j < i; j++)
			{
				if (check(i, j))
				{
					un(i, j);
				}
			}

		}

		if (find(0) == find(n + 1))
		{
			cout << "Yes" << endl;
		}
		else
		{
			cout << "No" << endl;
		}
	}
	return 0;
}